开源--open-falcon

人码图技术分享1014

一、open-falcon简介

  open-falcon是由小米运维团队,从互联网公司角度为出发点,开发出来的一套面向互联网行业的企业级的开源监控系统,截至2019年7月,open-falcon最新稳定版本为v0.2


二、open-falcon特性

数据采集方式多样灵活:支持agent、snmp、用户主动push、自定义插件等多种方式进行数据采集

高效率报警策略管理

人性化的告警设置

dashboard多维度数据展示

模板支持继承的同时支持覆盖策略项

server端无需做配置,只需要在client端按照agent则可以自动监控

引入tag概念,通过tag多维度对数据进行查询展示

三、open-falcon系统架构

1688909-20190709181300200-1273739433.png

四、open-falcon组件功能

falcon-agent:负责采集监控目标的数据,agent本身有一个http接口,用户可以通过http接口将数据主动push到agent。agent和transfer保持长连接,将采集到的数据上报给transfer。

transfer:会将数据分别转发给judge和graph,judge和graph使用一致性hash进行数据的分片。

judge:从heartbeat中获取报警策略,进行策略报警判断,并将判断是否告警的事件放进redis队列。

alerm:从redis中取出事件,根据配置做告警处理,如发送邮件通知等。

graph:负责数据的存储和归档以及数据查询功能。

heartbeat:统计agent上报信息,下发报警策略。

dashboard: 数据展示,用户配置。

五、open-falcon单机版安装

5.1安装redis

#创建redis工作目录

mkdir /home/redis && cd /home/redis

#下载redis程序包:

wget http://download.redis.io/releases/redis-4.0.9.tar.gz

#编译安装

tar -zxvf redis-4.0.9.tar.gz

mv redis-4.0.9 redis4.0.9 && cd redis4.0.9

mkdir logs

make && make install

#修改配置文件

vim redis.conf

bind 0.0.0.0

daemonize yes

pidfile /var/run/redis_6379.pid

logfile "/home/redis/redis4.0.9/logs/redis.log"

#启动redis

redis-server /home/redis/redis4.0.9/redis.conf

#连接测试

redis-cli -h 127.0.0.1 -p 6379


5.2安装mysql

#安装yum-utils

yum -y install yum-utils

#mysql官网上下载mysql的yum源安装包

wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm

#添加yum源

rpm -ivh mysql80-community-release-el7-1.noarch.rpm

#开启5.7安装,关闭8.0安装源

yum-config-manager --disable mysql80-community

yum-config-manager --enable mysql57-community

#yum安装mysql

yum -y install mysql-community-server

#修改mysql配置文件,关闭复杂密码策略

echo "validate-password=OFF" >> /etc/my.cnf

#启动mysql 并加入开机启动项             

systemctl start mysqld.service

systemctl status mysqld.service

systemctl enable mysqld.service

#查看默认root密码

grep 'temporary password' /var/log/mysqld.log

#登陆mysql后修改root密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

#root用户授权

GRANT ALL  ON *.* TO 'root'@'localhost' IDENTIFIED BY '123456';

GRANT ALL  ON *.* TO 'root'@'%' IDENTIFIED BY '123456';

flush privileges;


5.3初始化表结构

#clone项目至本地

git clone  https://github.com/open-falcon/falcon-plus.git

#导入表结构

cd ./falcon-plus/scripts/mysql/db_schema/

mysql -uroot -p123456 < 1_uic-db-schema.sql

mysql -uroot -p123456 < 2_portal-db-schema.sql

mysql -uroot -p123456 < 3_dashboard-db-schema.sql

mysql -uroot -p123456 < 4_graph-db-schema.sql

mysql -uroot -p123456 < 5_alarms-db-schema.sql

#删除目录

rm -rf falcon-plus/


5.4安装golang


#下载go安装包

https://dl.google.com/go/go1.12.7.linux-amd64.tar.gz

#解压至/home目录下

tar -zxvf go1.12.7.linux-amd64.tar.gz -C /home

#声明PATH

echo "export PATH=$PATH:/home/go/bin" >> /etc/profile

source  /etc/profile

#查看go版本

go version


5.5创建工作目录

export FALCON_HOME=/home

export WORKSPACE=$FALCON_HOME/open-falcon

mkdir -p $WORKSPACE

 

5.6下载安装包

#下载安装包

wget https://github.com/open-falcon/falcon-plus/releases/download/v0.2.0/open-falcon-v0.2.0.tar.gz

#解压

cd /home/open-falcon

tar  -zxvf open-falcon-v0.2.0.tar.gz


5.7后端启动

#修改配置文件为自己设置的mysql用户和密码

grep -Ilr 3306  ./ | xargs -n1 -- sed -i 's/root:/real_user:real_password/g'

#启动服务

/home/open-falcon/open-falcon start

/home/open-falcon/open-falcon check

#显示如下则全部启动成功

  falcon-graph UP 27685

  falcon-hbs UP 27697

  falcon-judge UP 27707

  falcon-transfer UP 27716

  falcon-nodata UP 27724

  falcon-aggregator UP 27732

  falcon-agent UP 27743

  falcon-gateway UP 27753

  falcon-api UP 27761

  falcon-alarm UP 28201


5.8前端启动

#下载dashboard项目至本地

cd $WORKSPACE

git clone https://github.com/open-falcon/dashboard.git

#安装所需依赖包

yum install -y python-virtualenv

yum install -y python-devel

yum install -y openldap-devel

yum install -y mysql-devel

yum groupinstall "Development tools"

#创建独立的虚拟环境

cd $WORKSPACE/dashboard/

virtualenv ./env

#pip安装依赖

./env/bin/pip install -r pip_requirements.txt -i https://pypi.douban.com/simple

#修改配置文件

vim rrd/config

# TODO: read from api instead of db

PORTAL_DB_HOST = os.environ.get("PORTAL_DB_HOST","127.0.0.1")

PORTAL_DB_PORT = int(os.environ.get("PORTAL_DB_PORT",3306))

PORTAL_DB_USER = os.environ.get("PORTAL_DB_USER","root")

PORTAL_DB_PASS = os.environ.get("PORTAL_DB_PASS","123456")

PORTAL_DB_NAME = os.environ.get("PORTAL_DB_NAME","falcon_portal")


# alarm database

# TODO: read from api instead of db

ALARM_DB_HOST = os.environ.get("ALARM_DB_HOST","127.0.0.1")

ALARM_DB_PORT = int(os.environ.get("ALARM_DB_PORT",3306))

ALARM_DB_USER = os.environ.get("ALARM_DB_USER","root")

ALARM_DB_PASS = os.environ.get("ALARM_DB_PASS","123456")

ALARM_DB_NAME = os.environ.get("ALARM_DB_NAME","alarms")

#启动

bash control start

bash control status

#查看日志

bash control tail


5.9安装agent

#将agent目录及启动命令拷贝至客户端上

scp -r agent/ root@192.168.1.66:/home/open-falcon/

scp open-falcon root@192.168.1.66:/home/open-falcon/

#编辑agent配置文件,修改hostname、transfer、heaetbeat配置项

vim agent/config/cfg.json

#启动agent,查看agent状态

./open-falcon start agent

./open-falcon check agent

tailf agent/logs/agent.log

#重载配置文件

curl 127.0.0.1:1988/config/reload


5.10访问测试

agent访问地址:

http://ip:1988/

dashboard访问地址:

http://ip:8081/

相关文章

在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程

在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程

最近尝试把项目迁移到Python环境下,特别新装了一台干净的Debian系统,准备重新配置环境,上网找了一些运行Python Web的环境方案,最后敲定Nginx+uWSGI组合,Nginx用得比较多...

 Nginx 部署 Python 项目

Nginx 部署 Python 项目

目标是完成一个 Python Web 项目的线上部署,我们使用最新的 Django 项目搭建一个简易的 Web 工程,然后基于 Nginx 服务部署该 Python Web 项目。1. 前期准备1.1...

Docker常用命令详解

Docker常用命令详解

docker daemon命令-docker运行可指定项详解docker attach命令-登录一个已经在执行的容器docker build 命令-建立一个新的imagedocker commit命令...

linux中用conda创建虚拟环境

linux中用conda创建虚拟环境

首先安装anaconda,使用wegt命令,下载sh文件官网链接:https://www.anaconda.com/products/individual下载命令:wget https://repo....

Linux系统上Nginx+Python的web.py与Django框架环境

Linux系统上Nginx+Python的web.py与Django框架环境

1.编译nginx在网上买了一本《实战nginx-取代Apache的高性能服务器》,写的比较浅,主要是些配置方面的东西,不过却正是目前我所需要的。由于需要支持https和rewrite,所以除了ngi...

「Kubernetes」k8s 的基本使用指令

结构模型k8s 是经典的一对多模型,有一个主要的管理节点master和许多的工作节点slaver。当然,k8s 也可以配置多个管理节点,拥有两个以上的管理节点被称为 高可用。k8s 包括了许多的组件,...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。