其实动态网站安全监控源码分享的问题并不复杂,但是又很多的朋友都不太了解网站状态监控系统源码,因此呢,今天小编就来为大家分享动态网站安全监控源码分享的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
这篇文章使用如上的架构来实现监控,效果之一如下图,详细效果在文末。
让我们快速创建一个简单的FlaskAPI,同时向SQLite3和Redis记录信息。而且,我们将使用Elasticsearch来监控应用程序和交易日志。
安装Flask、Redis和SQLite3,你可以运行以下命令。
pipinstallflasksqlite3redis\n
使用pip安装ElasticAPM代理。
pipinstall&34;psutil\n
ElasticAPM代理
Redis是一个开源的内存数据结构存储,可作为数据库、缓存和消息代理使用。由于Redis的速度、灵活性、可扩展性和易用性,它是广泛的应用中的一个流行选择。
Redis和SQL是两种不同类型的数据库,用于不同的目的。SQL数据库,如MySQL和PostgreSQL,用于以关系方式存储结构化数据,而Redis是一个内存数据存储,支持各种数据结构。
也就是说,SQL数据库是许多需要结构化、关系型数据存储和复杂查询能力的应用程序的首选。Redis经常与SQL数据库一起使用,Redis用于快速访问经常使用的数据,而SQL则用于更持久的存储。
ElasticAPM(应用性能监控)是ElasticStack的一项功能,允许用户实时监控他们的应用程序的性能和行为。它提供了一个简单而直观的用户界面,诊断性能问题。它可以用来识别和解决瓶颈问题,减少停机时间,并改善整个用户体验。与其他监控解决方案相比,它非常容易设置。
注意:对于简单的应用程序来说,配置一个监控设置并不是强制性的,但它提供了关于应用程序和用户如何与网络互动的额外见解。因此,在这里使用监控是为了了解应用程序和API工作的基本情况。
一旦所有的先决条件得到满足,你可以直接复制粘贴下面的代码片段。
ConfiguretouseELASTIC_APMinyourapplication&39;ELASTIC_APM&Settherequiredservicename.Allowedcharacters:\n39;SERVICE_NAME&39;RedisSqliteandPythonFlaskMicroservice&UseifAPMServerrequiresasecrettoken\n&39;:&39;,\n\n39;SERVER_URL&39;https://02c2630bXXXXXXXXXXXXXXX.apm.us-central1.gcp.cloud.es.io:443&Settheserviceenvironment\n&39;:&39;,\n\n&39;:&39;\n}\n\napm=ElasticAPM(app)\n\n34;localhost&34;/log&34;POST&34;message&StorethemessageinSQLite\nsqlite_conn=sqlite3.connect(&34;)\ncursor=sqlite_conn.cursor()\ncursor.execute(&34;)\ncursor.execute(&34;,(message,))\nsqlite_conn.commit()\nsqlite_conn.close()\n\n34;logs&34;Logged:{}&34;__main__&34;/&34;Hello,World!&34;__main__&Runthebelowcommandintheterminal\ncurl-XGEThttp://localhost:5000/\n
在安装了SQLite3和Redis包后,你需要运行Redis服务器来接受来自Flask应用程序的连接和日志。
因此,打开一个新的终端或shell,运行redis-server。这应该在6379端口启动Redis服务器。这是一个默认的端口,所以你可以按照需要改变。
我之所以使用SQLite3,是因为它是建立在SQL标准之上的轻量级数据库管理系统,与MySQL或其他SQL数据库系统相比,它易于设置,没有任何服务器要求。
importsqlite3\nimportredis\n\nredis_conn=redis.Redis(host=&34;,port=6379,db=0)\n\n@app.route(&34;,methods=[&34;])\ndeflog():\nmessage=request.form[&34;]\n\n34;logs.db&34;CREATETABLEIFNOTEXISTSlogs(messagetext)&34;INSERTINTOlogs(message)values(?)&StorethemessageinRedis\nredis_conn.rpush(&34;,message)\n\nreturn&34;.format(message)\n
从代码中可以看出,如果SQL数据库不可用,则创建SQL数据库,应用程序的日志将被插入到数据库中。之后,日志将被推送到Redis数据库。最后,它返回一个成功输出的日志信息。
注意:SQLite3将记录一个名为logs.db的文件,Redis将记录一个名为dump.rdb的文件。你可以使用一个在线SQLite查看器来阅读logs.db。而且,你可以通过将dump.rdb转换为JSON文件来读取rdb文件。这个GitRepo将提供redis-rdb-tools来转换为JSON。
这是一个直接的实施,只要在ElasticCloud上创建一个账户。如果你要测试,就把它作为一个试用基础。用APM服务器即集成服务器创建一个集群。
就这样,主要的设置已经完成。现在,你可以直接登录Elasticsearch部署,进入Observability部分,并按照下面的截图来增加与Flask应用程序的整合,即它被称为APM代理。
当你使用ElasticCloud时,如果你已经包含了集成服务器,APM服务器状态?应该是在线或激活。弹性云会自动为你完成安装APM服务器的繁重工作,这样你就可以集中精力处理代理问题。
代理是运行在你的应用进程内部的库。APM服务是根据SERVICE_NAME以编程方式创建的。从Flask的集成页面,你会得到以下带有SECRETTOKEN的代码片断。
app=Flask(__name__)\n\n39;ssettings\napp.config[&39;]={\na-z,A-Z,0-9,-,_,andspace\n&39;:&39;,\n\n39;SECRET_TOKEN&39;xXXXXCrlh5XXX6K&SetthecustomAPMServerURL(default:http://localhost:8200)\n&39;:&39;,\n\n39;ENVIRONMENT&39;production&39;DEBUG&39;DEBUG&34;message=test_message”http://localhost:5000/log\n
在Elasticsearch中监控,交易日志被适当地推送到APM服务器上。
你可以查看下面的屏幕截图进行对照。
关于动态网站安全监控源码分享的内容到此结束,希望对大家有所帮助。
