07-26-2023
boemskats
Lapis Lazuli | Level 10
Member since
04-26-2013
- 164 Posts
- 234 Likes Given
- 17 Solutions
- 130 Likes Received
About
Background in SAS Business Intelligence Consulting. Founder of Boemska Technology Solutions Ltd. (boemskats.com)
Enterprise architecture
Solution Design
Web Programming
-
Latest posts by boemskats
Subject Views Posted 3759 09-18-2020 02:39 PM 2872 02-28-2020 08:32 AM 3826 10-03-2019 10:01 AM 2181 05-10-2019 11:25 AM 868 04-27-2019 04:14 PM 6374 04-19-2019 10:31 AM 3313 04-16-2019 08:26 AM 2136 04-16-2019 07:53 AM 3560 03-14-2019 08:13 AM 3570 03-14-2019 07:37 AM -
Activity Feed for boemskats
- Got a Like for Re: Anyone interested in developping a VS Code extension for SAS language?. 02-12-2021 10:53 AM
- Liked A Giraffe Taught me Kubernetes! for Ali_Aiello. 10-26-2020 04:44 AM
- Liked How do I use Git with my SAS projects? Q&A and webinar recording for ChrisHemedinger. 09-30-2020 04:07 PM
- Posted Finding the Metadata owner of a Workspace session or SASWork directory on Linux on SAS Communities Library. 09-18-2020 02:39 PM
- Liked Azure Storage for SAS Architects for EdoardoRiva. 09-03-2020 06:27 AM
- Liked Overview of container technology: A quick introduction to all things containers for ShelleySessoms. 08-08-2020 07:50 PM
- Liked Re: Is it possible to limit xcmd to certain users? for ronan. 07-28-2020 03:32 AM
- Liked Connecting from SAS 9.4 to Azure Quickstart for FrederikV. 07-28-2020 02:39 AM
- Liked My first development with VA SDK using Node.js for XavierBizoux. 06-24-2020 10:08 AM
- Liked Directing CAS when to use its cache (or not) for RobCollum. 06-24-2020 10:08 AM
- Liked My favorite Administration papers from SAS Global Forum 2020 for cj_blake. 05-05-2020 11:34 AM
- Posted Re: Sample Script not storing/identifying the correct PID on Administration and Deployment. 02-28-2020 08:32 AM
- Got a Like for Re: SAS VIya 3.4 Preinstallation task is failing. 01-13-2020 01:22 AM
- Liked Re: stdin stdout for Tom. 10-26-2019 08:05 AM
- Got a Like for Re: ERROR SAS Web Infrastructure Platform. 10-16-2019 04:19 PM
- Got a Like for Re: ERROR SAS Web Infrastructure Platform. 10-11-2019 04:54 PM
- Got a Like for Re: Stopping a running scheduled job. 10-03-2019 10:30 PM
- Posted Re: Stopping a running scheduled job on Administration and Deployment. 10-03-2019 10:01 AM
- Liked SUGA webinar on October 8: ESM tool for SAS for ShelleySessoms. 10-03-2019 09:45 AM
- Liked Re: Object Spawner Major (page) Faults in the SAS Environment Manager for SimonDawson. 08-07-2019 01:52 PM
-
Posts I Liked
Subject Likes Author Latest Post 13 9 16 1 1 -
My Liked Posts
Subject Likes Posted 1 11-22-2018 03:16 PM 1 10-03-2019 10:01 AM 5 04-19-2019 10:31 AM 2 04-16-2019 08:26 AM 1 03-14-2019 07:37 AM -
My Library Contributions
Subject Likes Author Latest Post 7
08-03-2018
03:22 PM
1 Like
I'm pretty sure that EG (and thereby the client machine) needs to be able to directly resolve the DNS of the compute server it's connecting to, as per that server's DNS definition in SAS metadata. You won't be able to reverse proxy this with nginx; if you're running a single appserver setup you'd be able to forward the port itself (think it's 7551, not sure), but if you're loadbalancing across a number of application server nodes I doubt you'll be able to use ELB as the LB mechanism needs to be integrated with the object spawner & the target machine needs to be resolvable from the client.
Hope this makes sense. If you're after a bit of help doing this in AWS I'd give @shayes_ccllc a call.
Nik
... View more
07-22-2018
05:08 PM
1 Like
If I was in your situation my workaround would probably be to load the data into PostgreSQL and configure it with something like the pgaudit extension. Not ideal & obviously a longshot, but potentially doable with ODBC (unless you just happen to have access to postgres licensed).
Sorry to not have a better solution for you. I'm curious, what the row level auditing options will be once you've moved to server SAS?
Nik
... View more
07-20-2018
11:51 AM
Hi,
I would recommend that you attach your data payload as a file upload component of a multipart form data POST body, rather than as a named/defined stream. The fileref for your input file will then be assigned dynamically by the STP webapp as documented here. You can then substitute your instream fileref with &_WEBIN_FILEREF, the value of which will typically be that dynamically assigned fileref that looks something like #LN00012, pointing to the temporary uploaded copy of your input file.
Also, consider sending your data to sas as csv over json. It's much faster 🙂
Nik
... View more
06-14-2018
03:37 PM
1 Like
I suspect that your sassrv user is configured as an off-host / AD user, and that the authentication required at the operating system level to start a Multibridge session is causing a delay.
Increase the STP Server Start Size to match the number of Multibridge sessions you have defined, and if you're going to depend on this as an operational scoring service, also define some additional Multibridge sessions (assuming current default of 3). Increasing Start Size to match the number of sessions will make sure that STP multibridge processes are authenticated at the OS level and started by the Spawner long before your STP request ever hits them, so that they are ready for execution.
Note on increasing start size and removing the Inactivity Timeout: http://support.sas.com/kb/20/769.html
Note on adding multibridge sessions: http://support.sas.com/kb/30/568.html
@Kurt_Bremser - when you consider the typically 60ms+ round trip from client -> spawner -> metadata -> multibridge -> client, the page faults will be insignificant.
Nik
... View more
06-12-2018
11:49 AM
1. You'll need to make sure routing works and you'll obviously need to restart the relevant components, but I think that'll be all.
2. Don't overwrite your original disk to do this, make sure you keep the approach non-destructive.
3. Only way to find out is try, but I'm pretty confident it will.
4. An SDW based Installation will alert you to any prerequisites you might have missed in building the server, and make sure that the necessary prereqs are in place for a configuration to be carried out. Just copying the filesystem over won't do that. If I was doing this I'd definitely perform the installation step using the SDW, and then add the config (which is arguably what the config step of the SDW would do anyway). Only thing I'm not sure about is how this will impact Environment Manager, as I recall it being the only component that isn't strictly confined to the Config directory.
Nik
... View more
06-11-2018
07:59 PM
I think it's easier to perform the binaries install than to try to copy the files over to the new host, but I think porting the config over should be ok.
Run the 'Install software' step on the new host, make sure your SASHome path matches, perform all the setuid steps & vfabric licences, ensure the credentials for the host users match, and then move your config directory over to the same location as on the previous host. I can't think of any reason why this wouldn't work, unless your metadata repository or part of that filesystem is also corrupted.
... View more
05-23-2018
06:20 PM
I think this is your only way. I did some testing, I don't think inherited (DefaultAuth) session credentials work for spawning sessions, they have to be owned by the authenticated user directly.
You could just, again in theory, define a second token-authenticated application server context in metadata only, the paths for which point to the same one you have defined at the moment. Haven't tested this but it's worth a try.
Nik
... View more
05-23-2018
11:44 AM
1 Like
Hi guys,
JMX is a confusing TLA, as .jmx is also JMeter's file format extension, for load test projects.
@J_R_Furman, I've attached one of our test projects that does what you need. It's configured to test the SAS SPWA, and we normally use it in conjunction when benchmarking / soak testing client environments in conjunction with our own software ESM for SAS.
When I sent this to one of our clients a couple of years ago I documented it quite well in the email, so I'm including that verbatim below in case it helps you:
I've been wanting to turn this into a blog post for ages, so I thought I'd use you as a sounding board while I try to work through putting the logic to paper. Hope you don't mind.
So, a few notes on the attached test:
What this test does is (starting from just below the HTTP cookie manager bit of the tree):
- Makes a call to the SASStoredProcess webapp
- Expects a 302 redirect to SASLogon and follows it
- Parses the SASLogon HTML form for the hidden inputs of 'lt' (login token), 'execution', 'action' and 'eventId' using JMeter's XPath Extractor component and
- Loads those into JMeter internal variables
- Uses those variables to submit a username and password to the SASLogon webapp
- Carries on with a 'Hello World' loop, and after that's done, a 'Shoe Graphics' loop - just calling SAS's stock STPs as an example 'test'
- Logs out
Jmeter lets you define user variables using the User Defined Variables node and then use them in the other nodes downstream, by configuring settings as ${my.user.variable}. I've done this for the test configuration and server configuration bits, so when you want to run your tests on your own servers you can change the values set in the Server Configuration node. I've commented all the parameters in the configuration nodes, so you can have a look and see what each does - think it'll make sense to you.
So - how this would have been useful with your previous sticky sessions issue:
This is an end to end test, which includes the logon to SAS vis SASLogon, subsequent requests to SASStoredProcess looped N times, and then a logoff from SAS. When you run a test, the Results Tree element shows your results, and looks like this:
In this instance, there are 3 virtual users. The little circle next to the SASLogon bits signifies that there was a redirect that you can expand it to to see the requests, which are the 302 redirects to the saslogon app and the 200 from the SASLogon app to load the logon screen. As there are no subsequent redirects, the web tier is functioning properly as the correct auth cookie is being used (there is no load balancer on our dev server, so of course it is).
What you would have seen had you tested your web tier before with this method is every fourth or fifth Hello World request being either redirected back to SASLogon (with the little circle next to it like the SASLogons above), or failing and appearing in red if you were getting 403 errors (different failures mean different things in terms of what's misconfigured - I suspect you'd have been seeing the redirects).
I've left the attached project configured to run a test against our dev server. If you load it up, click this (clear all results) and then this (run all threads now), you should be able to run a small load test against our devbox. Have a look at the Results Tree component to see the calls being made (you might have to expand the thread group). We're playing with some different configurations & collecting data at the moment, so there might be some unusual MultiBridge session setup on our environment. Nevertheless you'll be able to see the results of the test in real time via https://edge.boemskats.com/esm-1.0/ -> Live View -> The STP multibridge session with the lowest port (as we use the cost-based LB).
... View more
05-11-2018
06:12 AM
2 Likes
It's been a while, but would configuring the Workspace server for token authentication not solve this?
(although, officially, use of internal accounts for this kind of thing still isn't recommended)
http://documentation.sas.com/?docsetId=bisecag&docsetVersion=9.4&docsetTarget=p06o3ymf2cuw16n1cmyi47t9icsn.htm&locale=en
... View more
05-04-2018
06:05 AM
1 Like
Thanks for the mention @JuanS_OCS 🙂
@HrZiller, it sounds like you'd like ESM. It's far better than Nagios or Zabbix, and operates completely independently of your SAS core services, thus allowing you to also profile and monitor their performance in addition to any jobs, users, etc.
Drop me a line if you're interested in knowing more, or visit our (dated) product page at boemskats.com/esm.
Nik
... View more
04-30-2018
04:23 PM
1 Like
This is exactly what I meant. In your screenshot the internal connection for the apps points at the host and port where the SAS Web Server (Apache 2.2) reverse proxy is running. The Web Server reverse proxies those connections to the JVMs according to the rules defined in Levn/Web/WebServer/conf/sas.conf.
I haven't done it, but in theory you should be able to just change the port your JVM runs on and update the JVM port under the Proxy definitions at the bottom of sas.conf, without needing to change any ports in metadata.
... View more
04-22-2018
08:00 AM
1 Like
If you ran your SAS on a real operating system instead of an undesigned and catastrophically bad programmed toybox, you wouldn't need something like that McAfee stuff.
A man after my own heart.
However aren't the internal connections in metadata in 9.4 configured to talk to the JVM via the reverse proxy? Shouldn't it just be a case of changing the JVM config and the sas.conf reverse proxy balancer definitions?
... View more
04-14-2018
06:12 AM
3 Likes
Hi @nayakig,
Jessica Franklin wrote an excellent paper on this topic for this year's SGF. You can find it here:
https://www.sas.com/content/dam/SAS/support/en/sas-global-forum-proceedings/2018/2003-2018.pdf
Since you're running GRID I suggest you also look at the JOB_SCHEDULING_INTERVAL and the number of job slots you've got configured for each of your nodes within lsb.hosts. Probably start with the latter.
Nik
... View more
03-10-2018
09:34 AM
2 Likes
What filesystem are those binaries on? Is it GPFS?
For what it's worth, we've seen some weird behaviour with Java and file locks being held when they logically shouldn't be (this was ages ago, on AIX 6.1). We got round it by handling that exception you're seeing & adding a delay + retry to the operation. It's far from an elegant solution, and I'm not sure it helps you or anyone else, but it fixed the problem for us (and quickly). It might be that it's the same problem exacerbating a race condition already present in the SDW code.
Keep us posted on what TS say.
... View more
03-10-2018
09:10 AM
1 Like
Hi,
This should work, and it is an efficient way of updating these names. However, it requires a disclaimer:
In SAS 9.3, it used to be possible to update the names of user and group objects within Management Console (I even think that you'd still be able to do this if you got your hands on a version of SASMC 9.3). However, SAS removed this ability in 9.4, and I'm assuming they have good reason for doing so - probably because the name is used as a key in some user sync routines, or in one of their solutions (which is where I imagine @JuanS_OCS's question comes from). What this code does therefore is override the restriction put in place by SAS in Management Console 9.4, and as such I guess it is 'not supported' (edit: just re-read Simon's reply, it's not supported; no need to guess).
With that said, I've updated these attributes many times before on our environments with no consequence, and I can't think of any reason why doing this would ever be harmful. However, as when running any code that updates metadata, make sure you back up repository before running this.
I hope the code it's self explanatory:
data changenames;
length oldname newname $256.;
infile datalines dsd;
input oldname $ newname $;
datalines;
Some old group name, Shiny New Group Name
Some other group name, Shinier New Group Name
Another old group name, Another New Group Name
;
run;
data identitygroups(keep=uri oldname newname rc);
length uri $256; nobj=1; n=1;
set changenames;
do while(nobj >= 0);
nobj=metadata_getnobj(cats("omsobj:IdentityGroup?@Name='",oldname,"'"),n,uri);
rc=metadata_setattr(uri,"Name",newname);
n=n+1;
end;
run;
Keep in mind that with this code, any group names that aren't matched in the oldname var will stop the loop from iterating and leave the remaining values unchanged. It also won't let you rename a group to another group which already exists, which is a good thing (just tested & observed in 9.4m3).
Nik
... View more