Grafana,监控神器!(免费用)

前言

随着公司业务的不断发展,业务的种类在不断增加,服务数量的不断增长,网络环境的越发复杂,我们发版更加频繁。

这样就会不可避免地导致线上事故的增多,因此需要对服务器到应用的全方位监控和预警,我们急需一个工具来解决这些问题,而Grafana的出现正好完美的解决了这个问题。

1.我们为什么要用Grafana?

Grafana是一种流行的开源数据可视化和监测工具,它提供了许多功能强大的仪表盘和图形来帮助用户更好地理解其数据。

以下是一些grafana的优点:

  • 灵活性:Grafana支持各种数据源,并且可以自由地配置大量的插件和面板,以展示不同类型的数据。

  • 易用性:Grafana非常易于使用,因为它提供了一个直观的用户界面,使用户能够轻松地创建、编辑和共享仪表板。

  • 实时监控:Grafana可以实时监测各种指标,包括应用程序性能、网络流量、服务器资源等等。

  • 可视化:Grafana有丰富的数据可视化选项,如曲线图、柱状图、饼图等,使得数据可以以直观的方式呈现出来。

  • 多样性:Grafana支持多种数据来源,如prometheus、elasticsearch、influxdb等,能够适用于不同类型的数据监控场景。

总之,Grafana提供了一个强大的平台,使得用户可以更好的监视和管理他们的数据,从而提高应用程序的性能和可靠性。

2.Grafana有哪些好用的功能?

Grafana提供了许多丰富的功能,包括但不限于以下几点:

  • 数据可视化:Grafana能够将各种类型的数据以图表、表格和仪表盘等形式进行展示和可视化。

  • 数据源支持:Grafana支持多种数据源,包括InfluxDB、Graphite、Elasticsearch、Prometheus等。用户可以根据自己的需求选择不同的数据源进行数据查询和可视化。

  • 灵活的面板布局:Grafana提供了丰富的面板选项,用户可以自由地定制面板的大小、位置、颜色、标题等。

  • 高度可定制性:Grafana的模板语言非常强大,用户可以使用它来自定义各种功能,例如警报规则、动态标记、样式等。

  • 图表交互性:Grafana提供了丰富的图表交互选项,例如缩放、平移、鼠标悬停、工具提示等。

  • 数据导出和分享:Grafana提供了数据导出和分享功能,使用户可以方便地将结果导出为PDF、PNG、CSV等格式,并与团队成员分享分析结果。

我们公司也搭建了一套监控系统,可以从Grafana上查看JVM使用情况、CPU使用情况、线程使用情况、内存使用情况、用户并发量、接口耗时等等,用Grafana可以查看多个维度的数据。

特别是分布式日志系统:Loki,能够跟Grafana完美相结合,我们可以通过Grafana平台查看系统日志,想查看本地日志一样方便。

3.阿里云上如何使用Grafana?

其实国内有很多云服务器厂商,已经支持Grafana了,在这里推荐使用阿里云的Grafana,因为它使用起来更方便,而且功能更加强大。

那么,我们如何在阿里云上如何使用Grafana呢?

3.1 启用创建Grafana服务

在grafana服务进行下单,需要填入【工作区名称】与【Admin密码】 阿里云grafana托管服务,可使用的用户可以通过阿里云账户进行单点登录转跳,也可以通过管理员账户admin完成登陆。

完成grafana专家版服务的创建。

点击ID,进入工作区管理界面,此处可以看到grafana的连接信息,这个url就是我们访问grafana的地址,下方提供了云服务集成。

最近我建了新的技术交流群,打算将它打造成高质量的活跃群,欢迎小伙伴们加入。

我以往的技术群里技术氛围非常不错,大佬很多。

image.png

加微信:su_san_java,备注:加群,即可加入该群。

访问连接信息,即可访问grafana的主页

3.2 手动添加数据源

我手上刚好有四台ECS资源,这里就对ECS云服务进行一个监控数据展示的配置。对ECS的监控数据源配置有几种,包括【企业云监控】、【Prome云监控探针到ECS】等,这里针对我个人没有那么多云资产的情况,就使用【aliyun-cms数据源插件】完成grafana到云监控数据源的配置。

3.2.1 手动配置云监控数据源插件

在【Configuraion】下,点击【Data sources】,此处可以手动添加数据源 点击【Add data source】

阿里grafana提供了多种数据源接入,此处我们选择【CMS Grafana Service】,点击【Select】

配置【Aliyun UserId】输入用户ID、【AccessKeyId】、【AccessKey】,点击【Save&test】进行保存与测试连接

OK,我们的信息么问题,提示数据源工作了

完成了对云监控数据的手动添加,此时cms显示default默认数据源

3.2.2 完成Dashboard展示面板的创建

先看一下我的四台ECS在云监控下的情况,所有主机监控正常,插件运行中

在grafana上选择【+】,create创建【Dashboard】

在dashboard页面点击【Add panel】新建面板

这里测试举例几种面板的形式,可能观测的内容和展示的方式不太合适,这个见仁见智咯。

  • 【Time series时序图】ECS的CPU使用率展示 进入面板的新建,这里我们的data source数据源是默认的cms,即为云监控的数据。

  • 【Namespace】选择acs_ecs_dashboard,为ECS的相关监控

  • 【Metric】选择cpuutilzation,为CPU使用率

  • 【Dimensions】选择需要展示的ECS云服务器实例

  • 【Y-column】选择Average平均值,当然也有最大值max与最小值min

  • 【X-column】默认timestamp

右侧为面板的相关配置,这里我修改了【Title】标题,完成配置点击右上角【Apply】

所有需要配置的几项参数,都会自动展开或补全 【Namesapce】:监控的云服务 【Metric】:监控指标 【Period】:同步周期 【Group】:云监控分组 【Dimensions】:展示实例

这里的【Metric】监控指标,可以在云监控的文档中找到参照 监控项说明-指路:https://help.aliyun.com/document_detail/43505.html

面板完成创建可执行修改编辑,导出删除等

【Gauge仪表盘】ECS的磁盘写入IOPS展示 【Metric】选择DiskWriteIOPS,为所有磁盘写IOPS 其他配置参照之前

【Stat状态阈值图】ECS的TCP连接数展示 【Metric】选择net_tcpconnection,为TCP连接数 其他配置参照之前 这里我对面板属性【thresholds】进行了配置,对各个阶段的数值区分颜色,可设定固定值也可百分比

【Bar gauge】ECS的内存用率展示 【Metric】选择memory_usedutilization,为内存使用率 其他配置参照之前 这里我对面板属性【orientation】进行了配置,调整了水平条的方向为纵向

完成了需要展示的面板配置,这就是整个dashboard的展示效果 当然可以折腾更多监控类型,这里就简单展示几项。

与云监控里的主机监控提供了监控相比,是不是更好看了,更高大上了,更直观了,也可以我们自己定义更多的监控项目了!好东西哇

目前可以在阿里云上免费试用,大家可以去试用中心领取操作。

  • 23
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
`argparse` 是 Python 标准库中用于解析命令行参数和选项的模块。它可以让你的 Python 脚本更加灵活,可以从命令行中接收参数和选项,并且可以根据用户提供的参数来执行不同的操作。下面是一些使用 `argparse` 的笔记: ### 基本示例 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') parser.add_argument('--url', type=str, help='需要处理的URL') parser.add_argument('--file', type=str, help='需要处理的文件路径') args = parser.parse_args() if args.url: print('处理URL:', args.url) elif args.file: print('处理文件:', args.file) else: print('请提供URL或文件路径') ``` 在上面的例子中,我们使用 `argparse` 创建了一个解析器对象,然后添加了两个参数 `--url` 和 `--file`。`type` 参数指定了参数的类型,`help` 参数指定了参数的帮助信息。最后,使用 `parse_args()` 方法解析命令行参数,并根据参数执行不同的操作。 ### 必需参数 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') parser.add_argument('input', type=str, help='输入文件路径') parser.add_argument('output', type=str, help='输出文件路径') args = parser.parse_args() print('输入文件:', args.input) print('输出文件:', args.output) ``` 在上面的例子中,我们将参数 `input` 和 `output` 指定为必需参数,这意味着用户必须在命令行中提供这两个参数,否则程序将会抛出异常。 ### 默认值 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') parser.add_argument('--url', type=str, help='需要处理的URL', default='https://www.baidu.com') parser.add_argument('--file', type=str, help='需要处理的文件路径', default='data.txt') args = parser.parse_args() print('处理URL:', args.url) print('处理文件:', args.file) ``` 在上面的例子中,我们为参数 `--url` 和 `--file` 指定了默认值,这意味着如果用户没有在命令行中提供这两个参数,那么程序将使用默认值。默认值可以是任何类型的值,不仅仅限于字符串类型。 ### 多个值 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') parser.add_argument('--input', type=str, help='输入文件路径', nargs='+') parser.add_argument('--output', type=str, help='输出文件路径') args = parser.parse_args() print('输入文件:', args.input) print('输出文件:', args.output) ``` 在上面的例子中,我们将参数 `--input` 指定为多个值,这意味着用户可以在命令行中提供多个输入文件路径,例如 `--input file1.txt file2.txt`。使用 `nargs='+'` 将参数指定为多个值,使用 `args.input` 来访问这些值。 ### 限制值的范围 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') parser.add_argument('--size', type=int, help='图像大小', choices=[256, 512, 1024]) args = parser.parse_args() print('图像大小:', args.size) ``` 在上面的例子中,我们将参数 `--size` 指定为整数类型,并且限制了它的取值范围只能是 256、512 或 1024。如果用户在命令行中指定了一个不在这个范围内的值,程序将会抛出异常。 ### 子命令 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') subparsers = parser.add_subparsers(title='子命令', description='可用的子命令') parser_a = subparsers.add_parser('a', help='子命令A') parser_a.add_argument('--input', type=str, help='输入文件路径') parser_a.add_argument('--output', type=str, help='输出文件路径') parser_b = subparsers.add_parser('b', help='子命令B') parser_b.add_argument('--url', type=str, help='需要处理的URL') args = parser.parse_args() if hasattr(args, 'input'): print('处理文件:', args.input) print('输出文件:', args.output) elif hasattr(args, 'url'): print('处理URL:', args.url) else: print('请提供子命令参数') ``` 在上面的例子中,我们使用 `add_subparsers()` 方法创建了子命令解析器对象,并添加了两个子命令 `a` 和 `b`。然后,我们为每个子命令添加了不同的参数。最后,根据子命令参数执行不同的操作。 以上就是一些 `argparse` 的基本使用笔记,希望对你有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏三说技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值