数据源配置-Agent上报

云监控利用开源的组件filebeat和logstash采集服务端的日志数据和服务器指标数据上报到云监控,云监控对这些指标和日志数据进行加工处理。


注意:在接入之前需要登录云监控在自定义监控-监控项管理页面新增需要上报日志对应的监控项,否则云监控不会处理被上报的日志数据。


常见的部署方式

image.png

1)filebeat+logstash+云监控(推荐采用这种方式上报

采用这种部署方式方便对所有上报的数据在logstash端进行管控,可以通过filter控制那些数据需要上报,那些数据不需要上报。

2)logstash+云监控

通过logstash直接上报数据到云监控,这种部署方案稍微有点繁琐,需要所有被监控的服务器都能访问公网,也不便于对上报数据进行统一管控。


具体接入方案

前置条件

Logstash安装(linux)

  • 脚本快速安装

📎logstash-install.sh

注意: 安装需要root权限.

./logstash-install.sh /usr/local #安装到/usr/local目录

1.安装完成之后脚本会在logstash的安装目录下的conf目录生成一个云监控的配置文件logstash-cloudmonitor.conf. 

2.修改logstash-cloudmonitor.conf文件,把app_id和pri_key替换成自己的appid和私钥,并确保sign_type正确.

3.启动脚本参考最后一步"接入云监控"的启动脚本.
    一键安装完成之后不需要再额外的安装云监控插件.

  • 普通安装
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.6.2.tar.gz
tar -xzvf logstash-6.6.2.tar.gz -C /usr/local #解压到指定目录
cd /usr/local 
mv logstash-6.6.2.tar.gz logstash
cd logstash
sudo ./bin/logstash -e 'input { stdin { } } output { stdout {} }' #尝试启动logstash

注意:1) logstash需要jdk1.8, 如果未安装jdk1.8则需要下载jdk1.8到服务器并安装; 2)

修改logstash bin目录下的logstash.lib.sh(logstash启动的时候会读取该文件,初始化启动变量),在文件末尾添加环境jdk1.8的环境变量。

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home"


Filebeat安装(安装)

  • 脚本快速安装

📎filebeat-install.sh

./filebeat-install.sh /usr/local #安装到/usr/local目录
    注意: 安装需要root权限.
  • 普通安装
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.6.2-linux-x86_64.tar.gz #下载
tar -xzvf filebeat-6.6.2-linux-x86_64.tar.gz -C /usr/local #解压到指定目录
cd /usr/local 
mv filebeat-6.6.2-linux-x86_64 filebeat


1配置

vi /usr/local/filebeat/filebeat.yml


filebeat.prospectors:
- type: log
  enabled: true
  paths:
    - /home/admin/logs/openmonitor/error.log  # 对应要上报的日志
  fields:
    namespace: error # 替换成云监控中的监控项名称
# 如果需要上报多个多个日志文件,参考上面的配置即可。
- type: log
  enabled: true
  paths:
    - /home/admin/logs/openmonitor/user-access.log
  fields:
    namespace: user_access 
    
output.logstash:
  hosts: ["127.0.0.1:5044"] #hosts配置logstash的ip地址,端口与logstash监听端口保持一致:默认5044

注意:把以上脚本复制黏贴到filebeat.yml文件里面,然后把filebeat.yml里面的filebeat.inputs和其它output.*删除掉

2启动

#cd到filebeat安装目录,然后执行以下命令启动filebeat
./filebeat -e -c filebeat.yml #前台启动
nohup ./filebeat -e -c filebeat.yml > startup.log 2>&1 & #后台启动


接入云监控

1、下载云监控插件并安装插件📎logstash-output-cloudmonitor.tar.gz

  • 存放到logstash的插件目录(比如:/usr/local/logstash/vendor/bundle/jruby/2.3.0/gems/)
  • tar -xzvf logstash-output-cloudmonitor.tar.gz
  • 修改logstash的配置文件Gemfile,在文件末尾添加插件路径

gem "logstash-output-cloudmonitor", :path => "./vendor/bundle/jruby/2.3.0/gems/logstash-output-cloudmonitor"

2、在logstash的config目录下新建一个logstash-cloudmonitor.conf文件,复制下面配置到文件。

input { 
  beats {
    port => 5044
  }
}
filter {
  mutate {
    add_field => { "namespace" => "%{[fields][namespace]}" }
  }
}
output {
  cloudmonitor {
    debug => false
    charset => "UTF-8"
    app_id => "xxx"
    sign_type => "RSA2"
    pri_key => "xxx"
    mapping => {}
  }
}

注意:

1)把app_id和pri_key替换成自己的appid和私钥

2) 如果私钥类型是RSA的话,需要设置sign_type为RSA

3)如果单独使用logstash(不结合filebeat)的话,需要修改mapping为


mapping => {"namespace"=>"监控项名称"}

4) 如果是对error日志监控的话,需要添加以下脚本到上面的logstash-cloudmonitor.conf文件的filter.mutate中.

add_field => { "appName" => "%{[fields][appName]}" }
add_field => { "hostname" => "%{[beat][hostname]}" }
add_field => { "file" => "%{[source]}" }

5)支持codec插件,对日志进行格式化


3、启动logstash

# cd到logstash的安装目录,然后执行以下命令启动logstash
./bin/logstash -f ./config/logstash-cloudmonitor.conf #前台启动,关闭窗口程序会被关闭
nohup ./bin/logstash -f ./config/logstash-cloudmonitor.conf > startup.log 2>&1 & #后台启动


FAQ

1.启动失败,报java版本问题?

image.png


答:因为logstash启动需要jdk1.8,所有需要安装jdk1.8到服务器,然后参考logstash的普通安装手册里面的jdk配置,或者在启动logstash之前export jdk到环境变量中,比如:

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home"

onlineServer