一、安装
1.1、配置INFLUXDB YUM源
[root@node ~]# cat /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
1.2、安装GRAFANA+INFLUXDB+TELEGRAF
安装influxdb
yum install influxdb
安装telegraf
yum install telegraf
安装grafana
wget https://dl.grafana.com/oss/release/grafana-6.1.3-1.x86_64.rpm
yum localinstall grafana-6.1.3-1.x86_64.rpm
1.3、软件版本
InfluxDB version: 1.7.4
Telegraf version: 1.10.2
Grafana version: 6.1.3
1.4、启动服务,添加开机启动
systemctl start influxdb.service
systemctl start telegraf.service
systemctl start grafana-server.service
systemctl enable influxdb.service
systemctl enable telegraf.service
systemctl enable grafana-server.service
1.5、查看GRAFANA界面
grafana默认监听在3000端口,默认用户名admin,密码admin
二、数据采集之TELEGRAF
Telegraf是用Go写的代理程序,可以用于收集系统和服务的统计数据,是TICK技术栈的一部分。它具备输入插件,可以直接从系统获取指标数据,从第三方API获取指标数据,甚至可以通过statsd和Kafka获取指标数据。它还具备输出插件,可以将采集的指标发送到各种数据存储,服务和消息队列。比如InfluxDB,Graphite,OpenTSDB,Datadog,Librato,Kafka,MQTT,NSQ等等,目前Telegraf尚不支持Oracle数据库统计数据的实时监控。
来自于官网:https://www.influxdata.com/time-series-platform/telegraf/
三、数据存储之INFLUXDB
InfluxDB是一个时间序列数据库,旨在处理高写入和查询负载,主要用于存储系统的监控数据 InfluxDB有三大特性: • Time Series (时间序列):可以使用与时间有关的相关函数(如最大,最小,求和等) • Metrics(度量):你可以实时对大量数据进行计算 • Eevents(事件):它支持任意的事件数据
特点 • Schemaless(无结构),可以是任意数量的列 • Scalable(可扩展):min, max, sum, count, mean, median 一系列函数,方便统计 • Native HTTP API, 内置http支持,使用http读写 • Powerful Query Language 类似sql • 自带压力测试工具等,功能强大
四、数据展示之GRAFANA
Grafana是一个开源指标分析和可视化套件,常用于可视化基础设施的性能数据和应用程序分析的时间序列数据。也可以应用于其他领域,包括工业传感器,家庭自动化,天气和过程控制。但请注意,我们使用Grafana最关心的是如何把数据进行聚合后进行展示。 Grafana支持多种不同的时序数据库数据源,Grafana对每种数据源提供不同的查询方法,而且能很好的支持每种数据源的特性。它支持下面几种数据源:Graphite、Elasticsearch、CloudWatch、InfluxDB、OpenTSDB、Prometheus、MySQL、Postgres、Microsoft SQL Server (MSSQL)。每种数据源都有相应的文档,可以将多个数据源的数据合并到一个单独的仪表板上。
五、配置监控主机状态及MYSQL运行状态
5.1、创建数据库
[root@node ~]# influx
> create user "mysql-server"with password '123456'
> create database myserverDB
5.2、配置本机的INFLUXDB数据库为期望的输出源-OUTPUT
[root@node ~]# vim /etc/telegraf/telegraf.conf # 主配置文件,必须存在,如output保存的数据库不同,可在telegraf.d下的配置文件单独配置
[[outputs.influxdb]]
urls = ["http://127.0.0.1:8086"]
database = "myserverDB"
5.3、配置监控项-INPUT
配置基本监控项
[root@node ~]# cat /etc/telegraf/telegraf.d/telegraf.conf
[global_tags]
[agent]
interval = "10s"
round_interval = true
metric_batch_size = 1000
metric_buffer_limit = 10000
collection_jitter = "0s"
flush_interval = "10s"
flush_jitter = "0s"
precision = ""
debug = false
quiet = false
logfile = ""
hostname = ""
omit_hostname = false
[[outputs.influxdb]]
urls = ["http://127.0.0.1:8086"]
database = "telegraf"
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = false
[[inputs.disk]]
ignore_fs = ["tmpfs", "devtmpfs", "devfs", "overlay", "aufs", "squashfs"]
[[inputs.diskio]]
[[inputs.kernel]]
[[inputs.mem]]
[[inputs.processes]]
[[inputs.swap]]
[[inputs.system]]
[[inputs.net]]
interfaces = ["ens192"]
[[inputs.netstat]]
配置mysql监控项
[root@node ~]# cat /etc/telegraf/telegraf.d/telegraf_mysql.conf
[[inputs.mysql]]
interval = "5m"
servers = ["root:root@tcp(10.0.0.1:3306)/?tls=false"] # 如果密码有特殊字符且以@结尾,无需增加双引号或者单引号,直接填入即可
perf_events_statements_digest_text_limit = 120
perf_events_statements_limit = 250
perf_events_statements_time_limit = 86400
table_schema_databases = [""]
gather_table_schema = false
gather_process_list = true
gather_info_schema_auto_inc = true
gather_slave_status = true
gather_binary_logs = false
gather_table_io_waits = false
gather_table_lock_waits = false
gather_index_io_waits = false
gather_event_waits = false
gather_file_events_stats = false
interval_slow = "30m"
[[outputs.influxdb]]
urls = ["http://127.0.0.1:8086"]
database = "mysql"
更多配置,参考:https://docs.influxdata.com/telegraf/v1.13/administration/configuration/
5.4、配置GRAFANA界面
选择Data Sources,添加需要的数据源
创建主机仪表盘
可以通过访问https://grafana.com/dashboards 来查看已经由其他用户共享的仪表盘,选取合适的使用,缩短上手时间 将合适的模版import导入,我这里用的是https://grafana.com/dashboards/1443, 注意模版与telegraf input配置一致。
可以看到如下界面
创建mysql仪表盘 import https://grafana.com/dashboards/1177
六、通过自定义脚本采集监控数据
6.1、在INFLUXDB数据库创建MYSQL_RUN_STATUS库
create user "admin" with password '123456'
create database mysql_run_status
6.2、在被监控主机上创建监控脚本,并开启MYSQL
通过influxDB数据库http接口上传数据,0为up,1为down
[root@node2 local]# systemctl start mariadb
[root@node2 local]# cat mysql_status.sh
#!/bin/bash
systemctl status mariadb.service |grep running &>/dev/null
if [ $? -eq 0 ];then
echo "mysql_status=0" > temp_mysql_run
else
echo "mysql_status=1" > temp_mysql_run
fi
IP=192.168.143.131
test=`cat temp_mysql_run`
curl -i -XPOST 'http://192.168.143.130:8086/write?db=mysql_run_status' --data-binary "mysql_run_status,ip=$IP,$test count=1"
6.3、执行监控脚本,查看入库情况
./mysql_status.sh &> /dev/null
> select * from mysql_run_status
name: mysql_run_status
time count ip mysql_status
---- ----- -- ------------
1556267694277201332 1 192.168.143.131 0
6.4、GRAFANA展示
连接数据源
创建仪表盘
FAQ:
导入模板后没有图形显示
1、检查软件版本是否跟上面的版本对应,高版本可能跟现有功能不兼容
2、查看influxdb中是否有数据表和数据