Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
普罗米修斯监控api_普罗米修斯监控原理,希望能够帮助你!!!。
Prometheus(由go语言(golang)开发)是一开源的监控&报警&时间序列数据库的组合。 适合监控docker容器。因为kubernetes(俗称k8s)的流行带动了 prometheus的发展。
官方网站:https://prometheus.io/
时间序列数据(TimeSeries Data):按照时间顺序记录系统,设备状态变化的数据被称为时序数据。
应用的场景很多,如:
● 性能好
关系型数据库对于大规模数据的处理性能糟糕。NOSQL 可以比较好的处理大规模数据,让依然比不上时间序列数据库。
● 存储成本低
高效的压缩算法,节省存储空间,有效降低I0
Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列, 30秒间隔,保留60天,大概花了200多G (来自官方数据)
____Prometheus 直接或通过中介推送网关从检测的作业中抓取指标,用于短期作业。它将所有抓取的样本存储在本地,并对这些数据运行规则,以从现有数据聚合和记录新的时间序列或生成警报。Grafana或其他 API 使用者可用于可视化收集的数据。
服务器准备
服务器类型 | 系统和IP地址 | 备注 |
---|---|---|
Prometheus服务器 | CentOS7.4(64 位) 192.168.80.10 | Prometheus |
grafana服务器 | CentOS7.4(64 位) 192.168.80.20 | mariadb、node_exporter |
被监控服务器 | CentOS7.4(64 位) 192.168.80.30 | Grafana |
所有服务器关闭防火墙和SElinux
systemctl stop firewalld setenforce 0
修改/etc/hosts
192.168.80.10 prometheus 192.168.80.20 grafana 192.168.80.30 client
1.设置时间同步
① 所有服务器安装ntpdate
yum install ntpdate -y
② 进行时间同步
ntpdate cn.ntp.org.cn date
2.安装普罗米修斯
下载地址:https://prometheus.io/download/ 。我这边之前下载过,直接传入就可以了。
① 传入安装包并解压
cd /opt/ rz -E ##传入安装包 tar zxvf prometheus-2.29.1.linux-amd64.tar.gz
② 移动并修改名
mv prometheus-2.29.1.linux-amd64 /usr/local/promethues cd /usr/local/promethues/
③ 后台启动普罗米修斯
cd /usr/local/promethues/ ./prometheus --config.file="/usr/local/promethues/prometheus.yml" & netstat -napt | grep prometheus #查看服务是否启动 端口为9090 或 lsof -i:9090
④ 浏览器中进行访问测试
http://192.168.80.10:9090
⑤ 查看 Status 中的 Targets 项。可以看到默认监控的 localhost 也就是本机。
⑥ 监控接口:通过http://服务器IP:9090/metrics可以查看监控的数据
① 查看cpu的运行状态(首页搜索栏中输入process_cpu_seconds_total)
② 点击 Graph 选项
① 在远程linux主机(被监控端agent1)上安装 node_exporter 组件,我这边直接上传。
官网下载地址为:https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
cd /opt/ tar zxvf node_exporter-1.2.2.linux-amd64.tar.gz -C /usr/local/ cd /usr/local/ mv node_exporter-1.2.2.linux-amd64/ node_exporter
② 启动 node_exporter 程序
cd node_exporter/ nohup /usr/local/node_exporter/node_exporter & #永久运行并在后台运行 netstat -natp | grep :9100 #查看端口占用情况
扩展: nohup命令:如果把启动node_exporter的终端给关闭,那么进程也会随之关闭。nohup命令会帮你解决这个问题。
③ 使用http协议+9100端口收集Linux主机信息
通过浏览器访问:http://192.168.80.30:9100/metrics 就可以看到 node_exporter 在被监控端手机的监控信息
④ 在 Prometheus 服务器的配置文件中添加被监控机器的配置段
vim /usr/local/promethues/prometheus.yml ##添加以下配置项 - job_name: "agent1" static_configs: - targets: ["192.168.80.30:9100"]
⑤ 重新启动prometheus监控系统
pkill prometheus lsof -i:9090 cd /usr/local/promethues/ ./prometheus --config.file="/usr/local/promethues/prometheus.yml" & lsof -i:9090
⑥ 重新回到普罗米修斯web端查看 Status 中的 Targets 项,可以看到被监控端 node_exporter 了,并且状态为 up。
① 在被监控端服务器上安装 mysqld_exporter 组件,我这边直接上传。
官方下载地址为:https://github.com/prometheus/mysqld_exporter/releases/download/v0.13.0/mysqld_exporter-0.13.0.linux-amd64.tar.gz
cd /opt/ tar zxvf mysqld_exporter-0.13.0.linux-amd64.tar.gz -C /usr/local/ cd /usr/local/ mv mysqld_exporter-0.13.0.linux-amd64/ mysqld_exporter
② 节省时间安装 mariadb 数据库
yum install mariadb\* -y
③ 开启并设置为开机自启,然后登录 mysql
④ 创建 mysql 账号帮刷新权限用于收集数据
grant select,replication client,process ON *.* to 'mysql_monitor'@'localhost' identified by 'abc123'; 账号为:mysql_monitor 密码为:abc123 flush privileges; exit
⑤ 在mysql_exporter 组件中创建配置文件,配置 mysql 信息
vim /usr/local/mysqld_exporter/.my.cnf [client] user=mysql_monitor password=abc123
⑥ 启动 mysql_exporter 组件
cd mysqld_exporter/ ./mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf &
⑦ 回到 prometheus 服务器的配置文件里添加被监控的 mariadb 的配置段
vim /usr/local/promethues/prometheus.yml ## 添加下面三行 - job_name: 'agent1_mariadb' static_configs: - targets: ['192.168.80.30:9104']
⑧ 改完配置文件后,重启服务
pkill prometheus lsof -i:9090 ./prometheus --config.file="/usr/local/promethues/prometheus.yml" & lsof -i:9090
⑨ 回到web管理界面 --》点Status --》点Targets --》可以看到监控mariadb了
⑩ 查看 mysql 线程连接
搜索栏中输入:mysql_global_status_threads_connected 进行查看
Grafana是一个开源的度量分析和可视化工具,可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警。
① 在grafana服务器上安装 grafana,我这边之前下载过,直接上传
官方下载地址:https://grafana.com/grafana/download
cd /opt/ rz -E rpm -ivh grafana-5.3.4-1.x86_64.rpm systemctl start grafana-server systemctl enable grafana-server lsof -i:3000
② 通过浏览器访问 http:// grafana服务器IP:3000就到了登录界面,使用默认的admin用户,admin密码就可以登陆了
③ 重新修改密码为:abc123
④ 把 prometheus 服务器收集的数据做为一个数据源添加到 grafana,让 grafana 可以得到 prometheus 的数据
部分选项解释 Auth项:公网传输数据加密与验证用的,我们这边暂时不需要设置 Advanced HTTP Settings项:15秒获取一次数据,GET方式
⑤ 为添加好的数据源做图形显示(查看被监控端1分钟、5分钟和15分钟的负载情况)
⑥ 匹配条件显示(根据IP或普罗米修斯里面设置的job)
① 在 grafana 上修改配置文件,并下载安装mysql监控的 dashboard(包含相关json文件,这些json文件可以看作是开发人员开发的一个监控模板),我这边直接上传。
官方下载网址: https://github.com/percona/grafana-dashboards
vim /etc/grafana/grafana.ini [dashboards.json] enabled = true path = /var/lib/grafana/dashboards git clone https://github.com/percona/grafana-dashboards.git
② 下载json模板并上传到 grafana 服务器后解压缩
参考网址: https://github.com/percona/grafana-dashboards
unzip grafana-dashboards-main.zip
③ 复制到/var/lib/grafana目录下并改名,然后重启服务
cp -r grafana-dashboards-1.17.4/ /usr/lib/grafana/ systemctl restart grafana-server.service
④ 把下载压缩包在本地解压
⑤ 在grafana图形界面导入相关json文件
⑥ 点import导入后,报prometheus数据源找不到,因为这些json文件里默认要找的就是叫Prometheus的数据源,但我们前面建立的数据源却是叫 prometheus_data ,修改之前数据源的名称即可。
⑦ 修改完数据源名称后再次查看
⑧ 数据展示完成(过段时间再看,加载完成就会数据显示了)
prometheus报警需要使用alertmanager这个组件,而且报警规则需要手动编写(对运维来说不友好)。所以我这里选用grafana+onealert报警。
注意: 实现报警前把所有机器时间同步再检查一遍.
再次所有服务器同步时间
② 先在onealert里添加grafana应用,需要先申请onealert账号。
官方网站:https://caweb.aiops.com/#/
③ 在新建应用中找到 grafana 应用 ,填好名字后保存获取应用key
然后可以看到配置步骤
① 在 Grafana 中创建 Notification channel,选择类型为 Webhook;
a. 将第一步中生成的Webhook URL填入Webhook settings Url;
URL格式: http://api.aiops.com/alert/api/event/grafana/v1/4065f3ceca859d41c/
b. Http Method选择POST;
c. Send Test&Save;
① 选择我们之前创建的cpu监控,点击Edit进行编辑
② 填写name 和 IS above
③ 现在发送的对象和发送的信息
④ 保存并自定义个名字
⑤ 现在可以去设置一个报警来测试了(这里以我们前面加的cpu负载监控来做测试)
在被监控端的agent执行测试命令cat /dev/urandom | md5sum
⑥ 等待一会,可以看到grafana监控页面CPU负载超过0.5了
⑦ 这个时候会收到邮件提示
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章