Telegraf和Grafana监控多平台上的SQL Server
问题
SQL Server在很多企业中部署在多个平台上(Windows,Linux和Container),需要一种能支持多平台的解决方案用于收集和展示相关的监控指标。
我选择企业中比较流行的监控展示工具Grafana和监控指标收集工具Telegraf进行实现。这也是为了方便与企业中已经在存在监控平台进行整合和对接。
如上图所示,Telegraf部署在SQL所在host,收集数据发送给时序数据库Influxdb存储,然后Grafana用于展示数据。
解决方案
安装和配置InfluxDB
# 下载1.8的stable version后进行安装
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.0.x86_64.rpm
chmod 755 influxdb-1.8.0.x86_64.rpm
yum localinstall influxdb-1.8.0.x86_64.rpm# 启动并设置自启动
systemctl start influxdb
systemctl enable influxdb# 8086用于客户端的HTTP连接,8088用于CLI调用RPC进行备份和还原操作
firewall-cmd --zone=public --add-port=8086/tcp --permanent
firewall-cmd --zone=public --add-port=8088/tcp --permanent
firewall-cmd --reload# 连接到influxdb并创建用户
fluxdb
> CREATE USER admin WITH PASSWORD '<password>' WITH ALL PRIVILEGES# 启用http用户验证,修改influxdb.conf中http p中auth-enabled = true
vim /etc/influxdb/influxdb.conf
systemctl restart influxdb# 创建用于存储监控数据的数据库,保存6个月的数据
influx -username 'admin' -password '<password>'
> CREATE DATABASE telegraf
> CREATE RETENTION POLICY telegraf_6m ON telegraf DURATION 180d REPLICATION 1 DEFAULT
> SHOW DATABASES
安装和配置Grafana
# 下载并安装Grafana
wget https://dl.grafana.com/oss/release/grafana-7.0.1-1.x86_64.rpm
chmod 775 grafana-7.0.1-1.x86_64.rpm
yum localinstall grafana-7.0.1-1.x86_64.rpm# 设置自启动
systemctl start grafana-server.service
systemctl enable grafana-server.service# 允许Grafana默认的端口3000
firewall-cmd --zone=public --add-port=3000/tcp --permanent
firewall-cmd --reload
然后在Browser中访问http://:3000,第一次访问时默登录认账号和密码都为admin,登录后会提示修改密码。
在在被监控的数据库主机安装和配置Telegraf
Telegraf连接到SQL,需要一个login,具有 VIEW SERVER STATE and VIEW ANY DEFINITION的权限,所以在每个被监控的实例上都需要创建之。
USE master;
GO
CREATE LOGIN [telegraf] WITH PASSWORD = N'1qaz@WSX';
GO
GRANT VIEW SERVER STATE TO [telegraf];
GO
GRANT VIEW ANY DEFINITION TO [telegraf];
GO
Telegraf on Linux
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.14.3-1.x86_64.rpm
sudo yum localinstall telegraf-1.14.3-1.x86_64.rpm
安装完成后,先要修改Telegraf的配置文件,再启动。在配置文件中主要配置两个部分:inputs和outputs。inputs表示监控数据从哪里来,outputs表示监控要发送到哪里去。
打开/etc/telegraf/telegraf.conf,找到[[outputs.influxdb]]部分,所有配置项默认都被注释了。我们需要删除注释并配置一些项。主要是Influxdb的地址,用户名、密码和数据库名等。
[[outputs.influxdb]]## The full HTTP or UDP URL for your InfluxDB instance.#### Multiple URLs can be specified for a single cluster, only ONE of the## urls will be written to each interval.# urls = ["unix:///var/run/influxdb.sock"]# urls = ["udp://127.0.0.1:8089"]urls = ["http://172.17.2.4:8086"]## The target database for metrics; will be created as needed.## For UDP url endpoint database needs to be configured on server side.database = "telegraf"## The value of this tag will be used to determine the database. If this## tag is not set the 'database' option is used as the default.# database_tag = ""## If true, the 'database_tag' will not be included in the written metric.# exclude_database_tag = false## If true, no CREATE DATABASE queries will be sent. Set to true when using## Telegraf with a user without permissions to create databases or when the## database already exists.skip_database_creation = true## Name of existing retention policy to write to. Empty string writes to## the default retention policy. Only takes effect when using HTTP.retention_policy = ""## The value of this tag will be used to determine the retention policy. If this## tag is not set the 'retention_policy' option is used as the default.# retention_policy_tag = ""## If true, the 'retention_policy_tag' will not be included in the written metric.# exclude_retention_policy_tag = false## Write consistency (clusters only), can be: "any", "one", "quorum", "all".## Only takes effect when using HTTP.write_consistency = "any"## Timeout for HTTP messages.timeout = "5s"## HTTP Basic Authusername = "admin"password = "<password>"
找到[[inputs.sqlserver]]部分,取消相关配置项的注释,servers部分连接到本地实例。
Telegraf默认的Plugin中包括了对SQL Server的实现, 这个Plugin还包括了对Azure SQL PaaS的实现
# # Read metrics from Microsoft SQL Server[[inputs.sqlserver]]
# ## Specify instances to monitor with a list of connection strings.
# ## All connection parameters are optional.
# ## By default, the host is localhost, listening on default port, TCP 1433.
# ## for Windows, the user is the currently running AD user (SSO).
# ## See https://github.com/denisenkom/go-mssqldb for detailed connection
# ## parameters, in particular, tls connections can be created like so:
# ## "encrypt=true;certificate=<cert>;hostNameInCertificate=<SqlServer host fqdn>"servers = ["Server=localhost;Port=1433;User Id=telegraf;Password=<yourPassword>;app name=telegraf;log=1;"]
#
# ## Optional parameter, setting this to 2 will use a new version
# ## of the collection queries that break compatibility with the original
# ## dashboards.query_version = 2
#
# ## If you are using AzureDB, setting this to true will gather resource utilization metrics
# # azuredb = false
#
# ## Possible queries:
# ## - PerformanceCounters
# ## - WaitStatsCategorized
# ## - DatabaseIO
# ## - DatabaseProperties
# ## - CPUHistory
# ## - DatabaseSize
# ## - DatabaseStats
# ## - MemoryClerk
# ## - VolumeSpace
# ## - PerformanceMetrics
# ## - Schedulers
# ## - AzureDBResourceStats
# ## - AzureDBResourceGovernance
# ## - SqlRequests
# ## - ServerProperties
# ## A list of queries to include. If not specified, all the above listed queries are used.
# # include_query = []
#
# ## A list of queries to explicitly ignore.
# exclude_query = [ 'Schedulers' , 'SqlRequests']
启动Telegraf之后,可以看到时已经加载的inputs和收集间隔
[root@SQL19N1 log]# systemctl status telegraf
● telegraf.service - The plugin-driven server agent for reporting metrics into InfluxDBLoaded: loaded (/usr/lib/systemd/system/telegraf.service; enabled; vendor preset: disabled)Active: active (running) since Tue 2020-05-26 14:19:07 UTC; 19min agoDocs: https://github.com/influxdata/telegrafMain PID: 12359 (telegraf)CGroup: /system.slice/telegraf.service└─12359 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.dMay 26 14:19:07 SQL19N1 systemd[1]: Started The plugin-driven server agent for reporting metrics into InfluxDB.
May 26 14:19:07 SQL19N1 telegraf[12359]: 2020-05-26T14:19:07Z I! Starting Telegraf 1.14.3
May 26 14:19:07 SQL19N1 telegraf[12359]: 2020-05-26T14:19:07Z I! Loaded inputs: system cpu disk diskio kernel mem processes swap sqlserver
May 26 14:19:07 SQL19N1 telegraf[12359]: 2020-05-26T14:19:07Z I! Loaded aggregators:
May 26 14:19:07 SQL19N1 telegraf[12359]: 2020-05-26T14:19:07Z I! Loaded processors:
May 26 14:19:07 SQL19N1 telegraf[12359]: 2020-05-26T14:19:07Z I! Loaded outputs: influxdb
May 26 14:19:07 SQL19N1 telegraf[12359]: 2020-05-26T14:19:07Z I! Tags enabled: host=SQL19N1
May 26 14:19:07 SQL19N1 telegraf[12359]: 2020-05-26T14:19:07Z I! [agent] Config: Interval:20s, Quiet:false, Hostname:"SQL19N1", Flush Interval:10s
Telegraf on Windows
以管理员身份执行如下PowerShell命令
# 下载软件
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.14.3_windows_amd64.zip ·-OutFile "c:\temp\telegraf-1.14.3_windows_amd64.zip"# 解压缩到C:\Program Files\Telegraf
Expand-Archive "c:\temp\telegraf-1.14.3_windows_amd64.zip", "C:\Program Files"# 将telegraf安装为windows服务
C:\"Program Files"\Telegraf\telegraf.exe --service install
修改telegraf.conf中outputs.influxdb和添加inputs.sqlserver部分,这些内容和在Linux上的配置一样,就不赘述了。
conf修改完成后,可以先测试一下telegraf是否能正常启动,没问题的话就启动telegraf服务。
# 测试
C:\"Program Files"\Telegraf\telegraf.exe --config C:\"Program Files"\Telegraf\telegraf.conf --test# 启动服务
C:\"Program Files"\Telegraf\telegraf.exe --service start
配置Grafana的数据源和Dashboard
登录Grafana后,在左侧的Configuration->Data Source中配置InfluxDB数据源,填写地址、账号、密码并设置为默认数据源,如下图
Dashboard,可以自己创建,也可以在采用公开社区的(感谢热心无私的大佬们)。这里,我采用SQL Servers by Jonathan Rioux。这个Dashboard中使用的Piechart不是Grafana预置的,所以还需要安装:
# Grafana所在Host安装,重启服务生效
grafana-cli plugins install grafana-piechart-panel
systemctl restart grafana-server.service
然后在Grafana界面,选择左侧的Dashboard->Import->填入Dashboard ID->Import,如下图:
配置完成后的,可以看这个Dashboard提供的信息还比较丰富的,您也可以根据自己的需要修改和添加相关内容.
总结
实际情况中,自带的数据收集和报表不能完全满足业务需求,自定义的数据收集和自定义的Dashboard,也是非常容易实现的,下次再写
如果已经在使用Zabbix了,Grafana可以直接对接到Zabbix的数据输出。
Telegraf能非常好的支持Cloud环境,下次说说对Azure SQL PaaS的监控
转载自:https://www.cnblogs.com/Joe-T/p/12973362.html
Telegraf和Grafana监控多平台上的SQL Server相关推荐
- SQL Server自动化运维系列——监控磁盘剩余空间及SQL Server错误日志(Power Shell)...
原文:SQL Server自动化运维系列--监控磁盘剩余空间及SQL Server错误日志(Power Shell) 需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的 ...
- SQL Server 监控系列(文章索引)
一.前言(Introduction) SQL Server监控在很多时候可以帮助我们了解数据库做了些什么,比如谁谁在什么时候修改了表结构,谁谁在删除了某个对象,当这些事情发生了,老板在后面追着说这是谁 ...
- 5. SQL Server数据库性能监控 - 当前请求
5. SQL Server数据库性能监控 - 当前请求 原文:5. SQL Server数据库性能监控 - 当前请求 对于在线运行的系统,当前数据库性能监控,通常监视以下几点: (1) 是否有阻塞 ( ...
- SQL Server监控全解析
SQL Server监控全解析 在SQL Server的日常管理中,让SQL Server高效运行,且性能良好,是DBA需要做的事.DBA需要了解数据库的日常运行情况,对性能进行分析和调优,需要对线上 ...
- telegraf监控mysql数据库_部署Telegraf+Influxdb+Grafana 架构来监控 MySQL
前段时间小编写了一篇:使用Nginx+Telegraf+Influxb+Grafana构建高逼格Nginx集群监控系统!文章,详细了介绍了 采集器telegraf, 时序数据库influxdb , 数 ...
- Telegraf+InfluxDB+Grafana快速搭建实时监控系统 监控postgresql
Telegraf+InfluxDB+Grafana快速搭建实时监控系统 监控postgresql 转载于:https://www.cnblogs.com/gaoyuechen/p/10081026. ...
- 浅谈Telegraf+InfluxDB+Grafana快速搭建简易实时监控系统
监控从来都是一个很宽泛的问题,任何可能出问题的地方都需要加入监控.全量监控的确是监控的终极目标.在搭建一套监控系统前,需要结合实际的系统情况和发展趋势进行考量.在作者看来,一套监控系统应主要由数据采集 ...
- Telegraf+InfluxDB+Grafana大数据运维监控系统
目 录 运维监控系统介绍 0课程安排及资料介绍 1海量日志监控告警系统介绍-ELK 2大数据定制化运维监控系统介绍-Flink 3自动化运维监控系统介绍 InfluxDB时序数据库 4InfluxD ...
- Telegraf+InfluxDB+Grafana搭建服务器监控平台
Telegraf+InfluxDB+Grafana搭建服务器监控平台 tags:网站 个人网站:https://wanghualong.cn/ 效果展示 本站服务器状态监控:https://statu ...
最新文章
- 产品打包工具的制作,ant,编译源码,打jar包,打tag,打war包,备份release版本等...
- 百度搜索结果URL参数含义解析
- 1030 Travel Plan (30 分) 【难度: 中 / 知识点: 最短路】
- GC分析中提到的根对象是什么
- 【ACM-ICPC 2018 沈阳赛区网络预赛 I】Lattice's basics in digital electronics
- Vue 教程第四篇—— Vue 实例化时基本属性
- 全盘镜像只还原c盘有影响么_如何正确的清理C盘
- iOS开发实践之网络检測Reachability
- DL实战(2):SiamFC - TensorFlow配置
- 中国操作系统变迁史,鸿蒙之前的尸骨
- 迅雷下载资源提示:敏感资源
- Redis 下载安装(Windows版本)
- Sencha Touch(Extjs)
- 解决element 新版本cascader级联选择器的各种bug
- 磐石云服务器_超牛的盘石云服务器平台
- Makefile3、书写规则(文件搜寻、伪目标、多目标、静态模式、自动生成依赖性)
- android p新功能_android 11 android的11大新功能
- Python编程实现数字图像的网络爬虫
- 微信小程序之兼容问题
- 又一国产开源项目走向世界,百度RPC框架Apache bRPC正式成为ASF顶级项目
热门文章
- 实践卡尔曼滤波--小球追踪
- 【F12一下,看看页面里的第一行】——说说浏览器兼容性模式
- Installing OpenCV 2.3.1 in Ubuntu
- xbox360链接pc_如何将实时电视从Xbox One流式传输到Windows PC,iPhone或Android Phone
- 用c语言复制字符串的元音字母,急求:编写程序,将一个字符串中的元音字母复制到另一个字符串,然后输出。...
- 《工具癖》Mac与Windows获取文件绝对路径的快捷键
- 这些Intel Atom处理器千万别升Windows 10创意者更新:不兼容
- java获取ResultSet长度
- Application Fundamentals
- SpringMVC异常处理流程