监控¶
内部监控应用程序(geonode.monitor)¶
注解
此应用程序需要MaxMind的GeoIP数据库文件。
基本概念和对象¶
GeoNode监视是一个可配置的监视应用程序,它允许监视GeoNode安装(包括Geoserver部署)的内部资源和硬件资源。
监控应用程序是可配置的,因此可以处理不同的部署方案-从在单个主机上运行的GeoNode和Geoserver,到将Geoserver部署到多个主机的分布式安装。
监控应用程序使用三个基本实体类来描述现实元素: Host
, Service Type
和 Service
。
Host
是描述运行GN或GS的操作系统的物理(或虚拟)实例的对象。此对象仅用于分组,不直接用于监控。Service Type
是对服务种类的描述。根据服务类型的不同,存储不同的指标,使用不同的数据收集机制。此外,对于系统监视,它不是直接执行的,而是使用GeoNode或Geoserver作为监视代理。这意味着,监视系统不需要安装额外的软件,而且,没有安装GeoNode或Geoserver的主机也不会受到监视。服务类型有四种:hostgeonode
,hostgeoserver
-这些类型分别描述与GeoNode或Geoserver一起运行的系统监视探测器,geonode
,geoserver
-应用程序级别的探测器,用于监控一个特定的GeoNode或Geoserver实例。
Service
描述一个特定的探测实例,可以是主机级别的,也可以是应用程序级别的。服务引用主机和服务类型。每个服务都必须命名,并且名称在系统范围内应该是唯一的。
如上所述,每个 Service Type
保留了一组 metrics
,特定于该类型。一个 metric
是对测量值的描述,例如:请求数量、响应大小或时间、CPU使用率、空闲内存等 Service Type
有自己的指标集。度量值可以是值计数器(如用户国家)、数字计数器(如请求数)或速率(如网络接口上的字节输入/输出)。
除了度量数据,监视还将存储在请求处理期间捕获的异常的异常信息。
定期(最多每1分钟)收集、聚合并以聚合形式存储数据。用户可以查看预定义相对时段(最后一分钟、最后10分钟、最后一小时、最后一天、上周)的数据。
用户可以启用和配置自动检查,该检查将在每个收集/聚合周期之后运行,并在该运行中的度量值超过配置的阈值时发出通知。
分析¶
GeoNode监视应用程序还提供有关用户级别的资源使用情况的信息。
无论何时发生有关某些资源的事件,都会收集这些信息。事件可以是不同类型的 (EventType
),它们指的是对资源的常见用户活动(上传、查看、下载等)。这些数据使用专用的 metric
并且根据所考虑的时间间隔和所需的分辨率,基于可配置的粒度进行聚集。
因此,一旦定义了时间间隔和时间范围,分析客户端就可以检索统计数据,例如:
独立访问者总数;
触发特定类型事件的独立访问者数量;
在某些资源类型上触发事件的唯一访问者数量;
给定国家/地区的独立访问者数量;
在特定资源上触发事件的独立访问者数量;
考虑多个条件组合的唯一访问者数量(例如,某个资源类型上的事件类型)。
安装¶
警告
此插件需要启用Potgresql DB后端
确保
UTC
时区到您的数据库psql -c 'set timezone=UTC;'
启用 MONITORING_ENABLED 标记并确保以下代码在您的设置中:
# Settings for MONITORING plugin
CORS_ORIGIN_ALLOW_ALL = ast.literal_eval(os.environ.get('CORS_ORIGIN_ALLOW_ALL', 'False'))
GEOIP_PATH = os.getenv('GEOIP_PATH', os.path.join(PROJECT_ROOT, 'GeoIPCities.dat'))
MONITORING_ENABLED = ast.literal_eval(os.environ.get('MONITORING_ENABLED', 'True'))
MONITORING_CONFIG = os.getenv("MONITORING_CONFIG", None)
MONITORING_HOST_NAME = os.getenv("MONITORING_HOST_NAME", HOSTNAME)
MONITORING_SERVICE_NAME = os.getenv("MONITORING_SERVICE_NAME", 'local-geonode')
# how long monitoring data should be stored
MONITORING_DATA_TTL = timedelta(days=int(os.getenv("MONITORING_DATA_TTL", 7)))
# this will disable csrf check for notification config views,
# use with caution - for dev purpose only
MONITORING_DISABLE_CSRF = ast.literal_eval(os.environ.get('MONITORING_DISABLE_CSRF', 'False'))
if MONITORING_ENABLED:
if 'geonode.monitoring' not in INSTALLED_APPS:
INSTALLED_APPS += ('geonode.monitoring',)
if 'geonode.monitoring.middleware.MonitoringMiddleware' not in MIDDLEWARE_CLASSES:
MIDDLEWARE_CLASSES += \
('geonode.monitoring.middleware.MonitoringMiddleware',)
# skip certain paths to not to mud stats too much
MONITORING_SKIP_PATHS = ('/api/o/',
'/monitoring/',
'/admin',
'/jsi18n',
STATIC_URL,
MEDIA_URL,
re.compile('^/[a-z]{2}/admin/'),
)
# configure aggregation of past data to control data resolution
# list of data age, aggregation, in reverse order
# for current data, 1 minute resolution
# for data older than 1 day, 1-hour resolution
# for data older than 2 weeks, 1 day resolution
MONITORING_DATA_AGGREGATION = (
(timedelta(seconds=0), timedelta(minutes=1),),
(timedelta(days=1), timedelta(minutes=60),),
(timedelta(days=14), timedelta(days=1),),
)
# privacy settings
USER_ANALYTICS_ENABLED = ast.literal_eval(os.getenv('USER_ANALYTICS_ENABLED', 'False'))
跑
DJANGO_SETTINGS_MODULE=<project_name>.settings python manage.py migrate monitoring
应用数据库架构更改并插入初始数据
跑
DJANGO_SETTINGS_MODULE=<project_name>.settings python manage.py updategeoip
若要获取MaxMind的GeoIP数据库文件,请执行以下操作。它将被写入由指定的路径 GEOIP_PATH 设置。
跑
DJANGO_SETTINGS_MODULE=<project_name>.settings python manage.py collect_metrics -n -t xml -f --since='<yyyy-mm-dd HH:mm:ss>'
创建第一个指标。
警告
替换
<yyyy-mm-dd HH:mm:ss>
一开始就有一个真正的约会时间。更新
Sites
来自admin;确保它包含正确的主机名不要忘记启用通知并从用户配置文件配置它们
启用Collect_Metrics cron
¶
警告
以下是基于Ubuntu16.04/18.04的机器的使用说明,但其他操作系统的使用步骤与此类似。基本概念是您必须允许系统每分钟运行该命令( without -f and since ):
DJANGO_SETTINGS_MODULE=<project_name>.settings python manage.py collect_metrics -n -t xml
Cront作业¶
sudo crontab -e
# Add the following line at the bottom; this will run the supervisor command every minute
* * * * * supervisorctl start geonode-monitoring
主管¶
sudo apt install supervisor
sudo service supervisor restart
sudo update-rc.d supervisor enable
sudo vim /etc/supervisor/conf.d/geonode-monitoring.conf
[program:geonode-monitoring]
command=<path_to_virtualenv>/geonode/bin/python -W ignore <path_to_your_project>/geonode/manage.py collect_metrics -n -t xml
directory = <path_to_your_project>
environment=DJANGO_SETTINGS_MODULE="<your_project>.settings"
user=<your_user>
numproc=1
stdout_logfile=/var/log/geonode-celery.log
stderr_logfile=/var/log/geonode-celery.log
autostart = true
autorestart = true
startsecs = 10
stopwaitsecs = 600
priority = 998
sudo service supervisor restart
sudo supervisorctl start geonode-monitoring
sudo supervisorctl status geonode-monitoring
sudo vim /etc/hosts
127.0.0.1 localhost
<public_ip> <your_host.your_domain> <your_host>
# The following lines are desirable for IPv6 capable hosts
配置¶
为了进行工作监控,至少 Service
应该进行配置。让我们假设以下部署场景:
只有一台机器,
geo01
geo01
托管GeoNode和Geoserver(包括PostgreSQL)。应用程序在端口80上使用nginx+uwsgi提供服务,但是可以通过
localhost
地址。Geoserver是从
/geoserver/
路径GeoNode从以下位置提供
/
路径
以下是如何为部署方案创建监视设置的分步说明:
以admin身份登录,进入admin区:
去 监控 节(或类型
/admin/monitoring/
作为URL中的路径):去 主机 :
单击 添加主机+ :
Enter following information: * host: localhost * ip: 127.0.0.1 Note, that host value is arbitrary. You can enter other name if you like. Don't forget to save.
去 服务 :
单击 添加服务+ :
输入以下信息:
name : local-geonode
host : localhost
服务类型 : geonode
添加另一个 服务 输入以下信息:
name : local-system-geonode
host : localhost
服务类型 : hostgeonode
url : http://localhost/ (应指向GeoNode主页)
添加另一个 服务 并输入以下信息:
name : local-geoserver
host : localhost
服务类型 : geoserver
url : http://localhost/geoserver/ (应指向Geoserver主页)
总而言之,应在管理/监控中创建以下条目:
主机:
localhost
,IP:127.0.0.1- 服务:
local-geonode
: 主机
localhost
类型
geonode
- 服务:
- 服务:
local-geoserver
: URL
http://localhost/geoserver/
主机
localhost
类型
geoserver
- 服务:
- 服务:
local-system-geonode
URL
http://localhost/
主机
localhost
类型
hostgeonode
- 服务:
用法¶
监控界面仅对超级用户可用。它在配置文件菜单中可用:
仪表板¶
主视图概述了GeoNode部署的最新情况。
顶杆和指示器¶
使用顶部栏按钮,用户可以:
从嵌套界面元素(图表、警报、错误)返回
选择将从中聚合和显示数据的时间窗口(从现在开始的前10分钟、前1小时、前一天或上周)
查看当前使用的时间窗口
启用/禁用自动刷新
下面是四个主要的健康指标:
- 聚合 运行状况检查 信息。
此元素将为:
green 如果没有警报或错误
yellow 如果有警报
red 如果有错误
正常运行时间 这显示了GeoNode的系统正常运行时间。
警报 显示来自定义的检查的通知数。单击时,警报框将显示详细信息。有关详细信息,请参阅通知说明。
错误 -显示在请求处理过程中捕获的错误数。单击时,错误框将显示捕获的错误的详细列表。有关详细信息,请参阅错误说明。
处于错误状态的指示灯
软件性能¶
软件性能视图按服务类型(WMS、WFS、OCS等)显示受监视的所有请求的Geoserver Web服务统计数据,以及特定于OWS的详细数据。
单击
将显示包含总体性能和每个OWS性能的数据历史记录的图表:
硬件性能¶
硬件性能框显示所选主机的硬件使用统计信息(使用任何hostgeonode或hostgeosserver类型的服务进行监视):CPU使用百分比和平均内存消耗。用户可以选择将从哪个主机显示数据。
单击
将显示图表,其中包含选定主机和时间段的数据历史记录
错误¶
错误视图将显示GeoNode和Geoserver中捕获的错误列表。将显示所选时间窗口的列表内容。
- 对于每个错误,都提供了详细信息:
错误类、消息和堆栈跟踪
基本请求上下文(IP、路径、用户代理)
警报¶
警报是有关观察到的指标包含的值超出允许范围(例如,响应时间超过30秒,或在最近30分钟内未处理任何请求)的情况的描述性信息。警报由下面描述的通知机制生成。
警报视图将显示当前时刻的警报列表(此处不显示过去生成的警报):
每个警报都包含更多有关错误的描述性信息:
通知¶
通知机制(不要与GeoNode中的通知应用程序混淆)是一种通知选定用户有关情况的方法,在这些情况下,收集的指标数据将指示部署问题。可以从警报视图访问通知:
可以有几种可用的通知配置。
每个通知配置包含两个主要元素:
生成警报时应通知的电子邮件地址列表
检查列表(必须至少有一个检查处于无效状态才能生成警报)
用户可以添加任意数量的电子邮件。电子邮件地址不需要指向在GeoNode实例中注册的用户。如果提供的电子邮件不属于任何用户,警报将作为常规电子邮件发送。如果提供的电子邮件可以与特定用户关联,则将使用通知应用程序(以及该用户的通知设置)发送警报。
与GeoHealthCheck集成¶
还可以使用外部工具轻松监控GeoNode,例如 GeoHealthCheck 。看见 Documentation on adding resources 有关详细信息,请参阅。